package Leetcode第二期;

/**
 * @author : K k
 * @date : 9:42 2020/10/13
 * 给定一个链表，两两交换其中相邻的节点，并返回交换后的链表。
 *
 * 你不能只是单纯的改变节点内部的值，而是需要实际的进行节点交换。
 *
 * 示例:
 *
 * 给定 1->2->3->4, 你应该返回 2->1->4->3
 */
public class 两两交换链表中的节点_24 {
    public ListNode swapPairs(ListNode head) {
        if (head==null){
            return null;
        }
        ListNode newHead=new ListNode(0);
        newHead.next=head;
        ListNode pre=newHead;
        ListNode cur=head;
        ListNode next=cur==null?null:cur.next;
        while (cur!=null && next!=null){
            //交换
            pre.next=next;
            ListNode node=next.next;
            next.next=cur;
            cur.next=node;

            pre=cur;
            cur=cur.next;
            next = cur==null?null:cur.next;

        }
        return newHead.next;
    }
}
